<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        //hasOwnProperty方法

        function Person(name, age) {
            this.name = name;
            this.age = age;
        }


        var p = new Person('Lily', 12)
        console.log(p);

        //判断name属性是否是私有属性  true私有属性 false 公有属性
        var res = p.hasOwnProperty('name')
        console.log(res); //true


        //in关键字 '属性名称' in 对象名称
        // 如果包含这个属性就返回true 如果不包含这个属性就返回false
        console.log('name' in p) //true

        // 以下属性判断是否为公有属性方法一
        // function hasPublicProperty(obj, name) {
        //     return (name in obj) && !obj.hasOwnProperty(name); //true       }
        var res = hasPublicProperty(p, 'aaa') //undefined
        console.log(res)

        // 以下属性判断是否为公有属性方法二

        function hasPublicProperty(obj, name) {
            if (name in obj) {
                if (obj.hasOwnProperty(name)) {
                    return false; //私有
                } else {
                    return true; //公有
                }
            } else {
                //没有
                return undefined; //没有

            }
        }
    </script>
</body>

</html>